# **表示a的b次方
a = 2
b = 3
c = a ** b
print("a的b次方的值为：", c)

# // 表示除完之后向下取整
a = 10
b = 4
c = a // b
print("除完之后向下取整的值为：", c)

# 比较运算符 == 、!= 、>、 <、 >= 、 <=
# 赋值运算符 := 海象运算符，可在表达式内部为变量赋值
a = [1, 2, 3, 4, 56, 7, 8, 9]
if (n := len(a)) < 10:
    print('n的值为', n)  # n的值为8

# 链式赋值
x = y = z = 10

# 交换两个值(交叉赋值)
x, y = y, x

# 解压赋值 用*字符串 方式存剩余的值
salaries = [11, 22, 33, 44, 55]
mon1, mon2, mon3, mon4, mon5 = salaries
mon1, *aa = salaries
print(mon1)
print(aa) # 值为[22, 33, 44, 55]

# 位运算符，按位运算符是把数字看作二进制来进行计算的。
a = 60  # 60 = 0011 1100
b = 13  # 13 = 0000 1101
c = 0
c = a & b  # 12 = 0000 1100
print("1 - c 的值为：", c)
c = a | b  # 61 = 0011 1101
print("2 - c 的值为：", c)
c = a ^ b  # 49 = 0011 0001
print("3 - c 的值为：", c)
c = ~a  # -61 = 1100 0011
print("4 - c 的值为：", c)
c = a << 2  # 240 = 1111 0000
print("5 - c 的值为：", c)
c = a >> 2  # 15 = 0000 1111
print("6 - c 的值为：", c)

# 逻辑运算符and or not
a = 10
b = 20
if a and b:
    print("1 - 变量 a 和 b 都为 true")
else:
    print("1 - 变量 a 和 b 有一个不为 true")

if a or b:
    print("2 - 变量 a 和 b 都为 true，或其中一个变量为 true")
else:
    print("2 - 变量 a 和 b 都不为 true")

# 修改变量 a 的值
a = 0
if a and b:
    print("3 - 变量 a 和 b 都为 true")
else:
    print("3 - 变量 a 和 b 有一个不为 true")

if a or b:
    print("4 - 变量 a 和 b 都为 true，或其中一个变量为 true")
else:
    print("4 - 变量 a 和 b 都不为 true")

if not (a and b):
    print("5 - 变量 a 和 b 都为 false，或其中一个变量为 false")
else:
    print("5 - 变量 a 和 b 都为 true")

# 成员运算符 in、not in
a = 10
b = 20
list = [1, 2, 3, 4, 5]
if a in list:
    print('a in list')
else:
    print('a is not in list')

if b not in list:
    print('b not in list')
else:
    print('b  in list')

# 身份运算符is 、 is not 身份运算符用于比较两个对象的存储单元
# x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True，否则返回 False
a = 20
b = 20
c = 3
if a is b:
    print("1 - a 和 b 有相同的标识")
else:
    print("1 - a 和 b 没有相同的标识")
